import axios from 'axios';
import { Message, MessageBox } from 'element-ui';
import { getApiPre } from '@/utils/index';
import router from './router';
import store from './store';
axios.defaults.baseURL = getApiPre();
//console.log(process.env.VUE_APP_API_URL);
// console.log(process.env.NODE_ENV);
const request = axios.create({
	timeout: 50000,
	headers: {
		'Content-Type': 'application/json; charset=utf-8',
	},
});
request.interceptors.request.use((config) => {
	console.log(config)
	config.headers['Authorization'] = localStorage.getItem('token'); // 请求头带上token
	return config;
});
request.interceptors.response.use(
	(response) => {
		const res = response.data;
		if (res.code !== 200 && res.code !== '200') {
			Message({
				message: res.message,
				type: 'warning',
				duration: 5 * 1000,
			});
			// 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
			if (res.code === 401 || res.code === 50012 || res.code === 50014) {
				MessageBox.confirm('你已被登出，可以取消继续留在该页面，或者重新登录', '确定登出', {
					confirmButtonText: '重新登录',
					cancelButtonText: '取消',
					type: 'warning',
				}).then(() => {
					store.dispatch('FedLogOut').then(() => {
						location.reload(); // 为了重新实例化vue-router对象 避免bug
					});
				});
			}
			return Promise.reject('error');
		} else {
			return response.data;
		}
	},
	(error) => {
		console.log('err' + error); // for debug
		// Message({
		// 	message: error.message,
		// 	type: 'error',
		// 	duration: 5 * 1000,
		// });
		return Promise.reject(error);
	}
);
export default request;
